package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.NumberRange;
import com.shrct.businessprocess.project.impl.RCSalePayStrategyImpl;
import com.shrct.businessprocess.project.proxy.RCSalePayStrategyProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCSalePayStrategyImpl.class)
public interface RCSalePayStrategy extends IModelObject {
  public abstract NumberRange getRange();
  
  public abstract RCSalePayStrategy setRange(final NumberRange range);
  
  public abstract Double getCom1Rate();
  
  public abstract RCSalePayStrategy setCom1Rate(final Double com1Rate);
  
  public abstract Double getCom2Rate();
  
  public abstract void update(final Procedure1<? super RCSalePayStrategy> updater);
  
  public abstract Double calcCom2Amount(final Double totalAmount, final Double comparableIncome);
  
  public abstract RCSalePayStrategyProxy toProxy();
}
